# Plano de Implementação - Sprint 4: Volume & Flow

Com base no sucesso das Sprints anteriores, vamos adentrar o universo dos indicadores de volume e fluxo financeiro, que são essenciais para confirmação da força de uma tendência técnica no mercado cripto/tradicional. 

O foco desta Sprint é garantir que o cálculo assimile perfeitamente a variação de preço junto com os pesos de transação (Volume) a cada candle em O(N) / O(1).

## 🚀 Escopo de Indicadores (5 selecionados)

| Indicador | Tipo | Descrição Breve | Complexidade |
|-----------|------|-----------------|--------------|
| **OBV (On Balance Volume)** | Panel | Adiciona/subtrai volume dependendo se o fechamento é de alta ou baixa na barra atual. Mostra pressão divergente. | Baixa |
| **MFI (Money Flow Index)** | Panel | Conhecido como o "RSI do volume", mede o capital entrando e saindo de um ativo. Escala 0-100. (Período: 14) | Média |
| **VWMA (Volume Weighted Moving Avg)** | Overlay | Uma média simples ponderada usando o volume de cada barra. Atrai o preço para onde o volume foi real. (Período: 20) | Baixa |
| **ADL (Accumulation / Distribution)** | Panel | Usa o fechamento de um período em relação ao range (high-low), multiplicando pelo volume num formato contínuo. | Média |
| **CMF (Chaikin Money Flow)** | Panel | Aplica o fluxo monetário calculado no ADL sob uma média contínua limitando a escala entre -1 a 1 para avaliar pressão temporal. (Período: 20) | Média |

> [!NOTE]
> Todos seguirão o novo padrão arquitetônico validado no final do Sprint 3, com imports relativos corretos na raiz do `src/` e reaproveitamento do `ColorConverter` centralizado na pasta `utils/`.

## 🛠 Proposta de Arquitetura

### 1. Modelos (Freezed)
Criaremos 5 conjuntos de modelos, que gerarão total de 10 classes de domínio. Exemplo da estrutura que será repetida fielmente:
- `obv_value.dart` e `obv_indicator.dart`
- `mfi_value.dart` e `mfi_indicator.dart`
- `vwma_value.dart` e `vwma_indicator.dart`
- `adl_value.dart` e `adl_indicator.dart`
- `cmf_value.dart` e `cmf_indicator.dart`

### 2. Calculators (Engine O(N)/O(1))
Cada indicador terá seu `*_calculator.dart` encapsulado sob `lib/src/engine/indicators/`. Todos os testes e integrações contarão com lógicas incrementais blindadas contra dados corrompidos.
- **MFI**: Precisaremos armazenar os Positive/Negative Money Flows (PMF e NMF) de maneira persistente na nossa lógica Incremental, assim como fizemos de forma nativa no **RSI**.
- **CMF**: Demanda a soma das frações do Money Flow Multiplier do período para dividir pelo volume total da janela. Será bem interessante na otimização de varredura.

### 3. Painters
Aproveitaremos eximiamente a classe base `BaseChartPainter`:
- `vwma_overlay_painter` será focado sobre o Canvas Overlay superior (onde as velas estão desenhadas).
- `obv_panel_painter`, `mfi_panel_painter`, `adl_panel_painter` e `cmf_panel_painter` atuarão em janelas painéis de altura responsiva sob as velas, renderizando e dimensionando os próprios limites em `shouldRepaint`. E utilizando `.withValues()` com as novas convenções Flutter!

### 4. Gestão de Estado & UI (Example App)
- Checkboxes em `example/lib/main.dart` no menu Settings Sidebar.
- Providers individuais no `lib/src/presentation/providers/`.
- Propriedades injetadas no construtor de `ChartWidget` para expor a interface fluida ao usuário final.

## ⚠️ User Review Required

> [!IMPORTANT]
> - Você concorda em implementarmos esses 5 indicadores de uma só vez nesta iteração do *Sprint 4*? Posso codificá-los e já resolver todas as gerações de arquivos `.freezed` localmente, deixando você com o app operável na hora?
> - Cores propostas: OBV (*Indigo Claro*), MFI (*Green/Red Overbought levels*), VWMA (*Rosa*), CMF e ADL (*Verde Escuro/Claro*). Aceita estas paletas?
> - Concorda com O(N)/O(1) nativo para o MFI usando os arrays persistentes de Fluxo Monetário dentro do Worker Incremental dele? 

Assim que der o seu "Go/Aprovado", prepararei o *Task List* oficial e iniciaremos o banquete de código! Mande o sinal!
